package com.lagou.sqlSession;

import java.util.List;

/**
 * @author user
 */
public interface SqlSession {

    /**
     * 查询所有
     *
     * @param statementId statementId
     * @param params      参数
     * @param <E>         范型
     * @return list
     * @throws Exception 异常
     */
    <E> List<E> selectList(String statementId, Object... params) throws Exception;

    /**
     * 根据条件查询单个
     *
     * @param statementId statementId
     * @param params      参数
     * @param <T>         范型
     * @return data
     * @throws Exception 异常
     */
    <T> T selectOne(String statementId, Object... params) throws Exception;

    /**
     * 插入
     *
     * @param statementId statementId
     * @param object      数据
     * @throws Exception 异常
     */
    void insert(String statementId, Object object) throws Exception;

    /**
     * 修改
     *
     * @param statementId statementId
     * @param object      数据
     * @return 影响的行数
     * @throws Exception 异常
     */
    int update(String statementId, Object object) throws Exception;

    /**
     * 删除
     *
     * @param statementId statementId
     * @param object      数据
     * @return 影响的行数
     * @throws Exception 异常
     */
    int delete(String statementId, Object object) throws Exception;


    /**
     * 为Dao接口生成代理实现类
     *
     * @param mapperClass class
     * @param <T>         范型
     * @return 代理对象
     */
    <T> T getMapper(Class<?> mapperClass);


}
